 /*
    为什么出现类？
    ES6，面向对象的思想（java，C++）差异非常大，所以呢js官方给出了一个更
    接近面向对象的方式，那就叫Class类的概念
    对象的模版，Class模版-》不同的对象
 */

    //class小写，空格，大写英文开头，类的名称
    //class 类名{ }//结构体
    let methodName = "hello"
class Person{
    //在类里面只能定义一个构造函数
    // constructor(){
      
    // }
    constructor(name,age,say){
        this.name = name;
        this.age = age
        this.say = say
    }
  name = "佩奇";
  static myStaticProp = 42
  age;
  //表达式
  say=function(){
    console.log("hello")
  }
  //语法
  say(){

  }
  //属性表达式
  [methodName](){

  }
  //静态方法,static 开头 空格后面是方法名
  //1, 他不会被继承，第二，我们不需要new对象调用它，直接通过类就可以调用
  static classMethod(){
    console.log("classMethod")
  }
}
//在我们new对象时，会默认调用构造函数
let peiqi = new Person("我是佩奇",16,function(){
    console.log("传进来的函数")
})
// console.log(peiqi.name)
// console.log(peiqi.age)
// peiqi.say()
// Person.classMethod()
// console.log(Person.myStaticProp)


//遍历for in
for(let key in peiqi){
  console.log(key,peiqi[key])
}
//Object.keys方法
Object.keys(peiqi).forEach(function(key){
  console.log(key,peiqi[key])
})

//Object.values方法
Object.values(peiqi).forEach(function(value){
  console.log(value)
})
//Object.entries方法,返回一个包含对象所有可枚举的属性键值对
Object.entries(peiqi).forEach(function([key,value]){
  console.log(key,value)
})
//forEach,仅适用于数组，如果对象是一个数组，可以用数组的foreach进行遍历
//无法遍历
peiqi.forEach(function(value,index){
  console.log(value,index)
})